package com.uva.pgpi.sgcc.web.servlets;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.DaoManager;
import com.j256.ormlite.support.ConnectionSource;
import com.uva.pgpi.sgcc.beans.Artefacto;
import com.uva.pgpi.sgcc.beans.Proyecto;
import com.uva.pgpi.sgcc.util.DataBaseConnection;

/**
 * Servlet implementation class ServletRedirNuevaSolicitud
 */
public class ServletRedir extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public ServletRedir() {
		super();
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		try {
			this.redirect(request, response);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		try {
			this.redirect(request, response);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	private void redirect(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException, SQLException {
		// Primero cojo cual es la URL que viene del formulario

		String url = (String) request.getParameter("redirigir");

		RequestDispatcher dispatcher = null;

		if (url == null) {
			url = "/ServletEntry";
		}

		ConnectionSource conn = null;

		try {

			switch (url) {
			
			case "listaArtefactos":
				url = "/WEB-INF/ccc/listaArtefactos.jsp";
				conn = DataBaseConnection.getInstance().getConnection();
				Dao<Artefacto, String> artefactoDAO = DaoManager.createDao(conn,
						Artefacto.class);

				ArrayList<Artefacto> listArtefact = (ArrayList<Artefacto>) artefactoDAO
						.queryBuilder().orderBy(Artefacto.ID_PROYECTO, false).orderBy(Artefacto.NOMBRE, true).query();

				request.setAttribute("listArtefactos", listArtefact);
				
				break;
			
			case "crearArtefacto":
				url = "/WEB-INF/ccc/crearArtefacto.jsp";
				
				conn = DataBaseConnection.getInstance().getConnection();
				Dao<Proyecto, String> proyectosDAO = DaoManager.createDao(conn,
						Proyecto.class);

				ArrayList<Proyecto> listProyects = (ArrayList<Proyecto>) proyectosDAO
						.queryForAll();

				request.setAttribute("listProyectos", listProyects);
				
				break;

			case "crearArtefacto2":
				url = "/WEB-INF/ccc/crearArtefacto2.jsp";
				conn = DataBaseConnection.getInstance().getConnection();
				Dao<Artefacto, String> artefacto2DAO = DaoManager.createDao(conn,
						Artefacto.class);

				Artefacto artefact = artefacto2DAO.queryForId("1");

				request.getSession().setAttribute("artefactoCreado", artefact);
				
				break;
				
			case "listaProyectos":
				url = "/WEB-INF/ccc/listaProyectos.jsp";

				conn = DataBaseConnection.getInstance().getConnection();
				Dao<Proyecto, String> proyectoDAO = DaoManager.createDao(conn,
						Proyecto.class);

				ArrayList<Proyecto> listProyect = (ArrayList<Proyecto>) proyectoDAO
						.queryForAll();

				request.setAttribute("listProyectos", listProyect);

				break;

			case "crearProyecto":
				url = "/WEB-INF/ccc/crearProyecto.jsp";
				break;

			case "crearSolicitud":
				url = "/WEB-INF/solicitante/nuevaSolicitud.jsp";

				conn = DataBaseConnection.getInstance().getConnection();
				Dao<Artefacto, String> ArtefactoDAO = DaoManager.createDao(
						conn, Artefacto.class);
				Proyecto filtroProyecto = (Proyecto) request.getSession().getAttribute("filtroProyecto");

				ArrayList<Artefacto> listArt = (ArrayList<Artefacto>) ArtefactoDAO
						.queryBuilder().where().eq(Artefacto.ID_PROYECTO,filtroProyecto).query();

				request.getSession().setAttribute("listArt", listArt);

				// En este caso necesito saber los artefactos que hay

				break;
			case "mainSolicitudes":
				url = "/WEB-INF/solicitante/mainSolicitante.jsp";
				break;
			case "estadisticas":
				url = "/WEB-INF/ccc/mainCCC.jsp";
				break;
			default:
				url = "/ServletEntry";
				break;
			}

		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			if (conn != null && conn.isOpen()){
				conn.close();
			}
			
			dispatcher = getServletContext().getRequestDispatcher(url);

			dispatcher.forward(request, response);
		}

		
	}

}
